package br.com.rrf;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import br.com.rrf.Pedido.Status;

public class FragmentTelaFazerPedido extends Fragment implements OnClickListener, MudouValorTotal {

	Item item;
	List<Item> listItens;
	ListView listViewItens;
	List<Produto> produtos;
	ProdutosDB db;
	PedidoBD pedidoBD;
	Pedido pedido;
	TextView textViewValorTotal;
	double valorTotal;
	
	@SuppressWarnings("unchecked")
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		
		super.onCreate(savedInstanceState);  
		if (savedInstanceState != null) {  
			listItens = (List<Item>) savedInstanceState.getSerializable("itens"); 
			valorTotal = Double.parseDouble(savedInstanceState.getString("vTotal"));
		} else {  
			listItens = new ArrayList<Item>();  
			db = new ProdutosDB(getActivity());
			carregandoListItens();
			valorTotal = 0;
		}  		
		
		setHasOptionsMenu(true);
		View layout = inflater.inflate(R.layout.fragment_tela_fazer_pedido, null);
		listViewItens = (ListView)layout.findViewById(R.id.listView1);
		textViewValorTotal = (TextView)layout.findViewById(R.id.textViewValorConta);
		layout.findViewById(R.id.buttonVoltar).setOnClickListener(this);		
		layout.findViewById(R.id.buttonEnviar).setOnClickListener(this);
				
		pedidoBD = new PedidoBD(getActivity());
		
		return layout;
	}
	
	@Override
	public void onActivityCreated(Bundle savedInstanceState) {
		super.onActivityCreated(savedInstanceState);
				
		AdapterTelaFazerPedido adapter = new AdapterTelaFazerPedido(listItens, this, valorTotal);
		listViewItens.setAdapter(adapter);
		
		textViewValorTotal.setText(String.valueOf(valorTotal));
		
		registerForContextMenu(listViewItens);
	}

	@Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    	getActivity().getMenuInflater().inflate(R.menu.tela_fazer_pedido, menu);
    	super.onCreateContextMenu(menu, v, menuInfo);
    }
	
    @Override
	public void onSaveInstanceState(Bundle outState) {  
     super.onSaveInstanceState(outState);  
     outState.putSerializable("itens", (Serializable) listItens);
     outState.putString("vTotal", textViewValorTotal.getText().toString());
    }  
	
	// Metodo para carregar o list
	public void carregandoListItens() {
				
		produtos = db.listarProdutos();
		for(Produto prod : produtos) {
			item = new Item(0, 0, prod);
			listItens.add(item);
		}
	}

	@Override
	public void onClick(View v) {
		if(v.getId() == R.id.buttonEnviar) {
			boolean pedidoValido = false;
			for (Item i : listItens) {
				if(i.getQtd() > 0) {
					pedidoValido = true;
				}
			}			
			if(pedidoValido) {
				pedido = new Pedido(0, listItens, Status.Pendente);
				pedidoBD.inserir(pedido);
				getActivity().finish();
			} else {
				Context contexto = v.getContext();				
				String texto = "Aumente a quantidade de algum produto para efetuar o pedido.";
				int duracao = Toast.LENGTH_SHORT;
				Toast toast = Toast.makeText(contexto, texto, duracao);
				toast.show();	
			}
			
		} else {
			getActivity().finish();
		}
	}

	@Override
	public void valorMudou(double vTotal) {
		textViewValorTotal.setText(String.format("%.2f", vTotal));//String.valueOf(vTotal));		
	}
	
}
